package com.stock.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.stock.pojo.Stock;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;

public interface StockMapper extends BaseMapper<Stock> {
    // 根据商品 ID 查询库存信息
    Stock getStockByProductId(String productId);

    // 扣减库存数量，考虑库存不足的情况抛出异常（通过返回值判断也可，此处以异常形式体现严谨性）
    @Update("UPDATE product_stock SET stock_quantity = stock_quantity - #{quantity} WHERE product_id = #{productId} AND stock_quantity >= #{quantity}")
    void decreaseStock(@Param("productId") String productId, @Param("quantity") int quantity);

    // 增加库存数量
    @Update("UPDATE product_stock SET stock_quantity = stock_quantity + #{quantity} WHERE product_id = #{productId}")
    void increaseStock(@Param("productId") String productId, @Param("quantity") int quantity);

    // 批量更新库存（例如在批量入库等场景可能用到）
    void batchUpdateStock(List<Stock> stockList);
}